package com.makefuture.task;

import it.sauronsoftware.cron4j.Scheduler;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Testjob1 implements Runnable {
	/**
	 *    5 ****  这每隔一小时，在开始的五分钟（00:05，01:05，02:05等）将推出一项任务
	 *    *****  每分钟的任务。
	 *    *12 **星期一  在周一的12小时将推出每分钟的任务。
	 *    * 12 16 *星期一   每分钟在16日（星期一），12小时，但只有一天是本月16日   每个子模式可以包含两个或两个以上的逗号分隔值。
	 *    59 11 ** 1,2,3,4,5   这种模式导致发射任务，以11:59在周一，周二，周三，周四和周五上午。值的时间间隔是承认和使用减号字符定义。
	 *    59 11 ** 1-5   这种模式相当于前一个。  可以使用斜线字符识别步骤值的范围内。 它可以使用的形式* / c和AB / C。
	 *     子模式匹配每一个C值的范围0，MAXVALUE或AB。
	 *     * / 5 ****   这种模式导致一个任务将推出每5分钟（0:00，0:05，0:10，0:15等）。 
	 *     3-18/5 ****   这种模式导致任务即将推出每5分钟从第三分钟，18小时（0时03分，0点08 0点13分，0时18分，1:03，1:08左右开始上）。
	 *     * / 15 9-17 ***   这种模式导致任务之间的一天（9:00，9:15，9:30，9点45等等......注意，最后的执行将在第9和第17小时，每15分钟将推出17:45）。 所有新鲜的描述语法规则可以一起使用。 
	 *     * 12 10-16/2 **   这种模式导致将推出每分钟在一天12小时的任务，但只有一天是10日，12月14日或16日。
	 *     * 12 1-15,17,20-25 **   这种模式导致将推出每分钟在一天12小时的任务，但必须在1日和15日，第20和25，或者至少是它必须是17月的一天。  最后cron4j让你合并成一个管道字符，更多的调度模式：
	 *      0 5 *** 8 10 *** | 22月17日***   这种模式导致任务，每天05:00，10:08和17:22将推出。
	 */
	public void run() {
		Date currentTime = new Date();
		  SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		  String dateString = formatter.format(currentTime);
		System.out.println(dateString);
		System.out.println("Another minute ticked away1...");
	}
	
	public static void main(String[] args) {
		// Creates a Scheduler instance.
		Scheduler s = new Scheduler();
		// Schedule a once-a-minute task.
		s.schedule("* * * * *", new Runnable() {
			public void run() {
				System.out.println("Another minute ticked away...");
				Date currentTime = new Date();
				  SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
				  String dateString = formatter.format(currentTime);
				System.out.println(dateString);
			}
		});
		// Starts the scheduler.
		s.start();
		// Will run for ten minutes.
		try {
			Thread.sleep(1000L * 60L * 10L);
		} catch (InterruptedException e) {
			;
		}
		// Stops the scheduler.
		s.stop();
	}

}